"""
函数式编程入门
    定义：
        用一系列函数解决问题。
    表现形式：
        1. 函数可以赋值给变量，赋值后变量绑定函数。
        2. 允许将函数作为参数传入另一个函数。
        3. 允许函数返回一个函数。 （后面说）
    高阶函数：
        将函数作为参数或返回值的函数。
"""
def fun1():
    print('函数fun1')


# 直接调用？ 间接调用？
fun1() # 直接调用
a = fun1()   # 打印了 函数fun1
print(a) # None

print('-' * 30)
a = fun1
print(a) # <function fun1 at 0x0000021AC5573240>
a() # 间接调用

print('=' * 30)

def fun2():
    print('函数fun2')

# 函数中可以调用其他函数
# def fun3():
#     print('函数fun3')
#     fun2() #固定搭配，写死了
#     # 如何灵活搭配
#
#
# fun3()

# 函数中可以调用其他函数
def fun3(func):
    print('函数fun3')
    func() # 灵活配置

# 将一个函数作为另一个函数的实参进行传递
fun3(fun1)
